##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
## Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
## Warning: package 'pxR' was built under R version 4.4.2
## Cargando paquete requerido: stringr
## Cargando paquete requerido: reshape2
## Warning: package 'reshape2' was built under R version 4.4.2
## Cargando paquete requerido: RJSONIO
## Cargando paquete requerido: plyr
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
##
## Adjuntando el paquete: 'plyr'
## The following objects are masked from 'package:plotly':
##
## arrange, mutate, rename, summarise
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
##
## Adjuntando el paquete: 'httr'
## The following object is masked from 'package:plotly':
##
## config
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ plyr::arrange() masks plotly::arrange(), dplyr::arrange()
## ✖ purrr::compact() masks plyr::compact()
## ✖ httr::config() masks plotly::config()
## ✖ plyr::count() masks dplyr::count()
## ✖ plyr::desc() masks dplyr::desc()
## ✖ plyr::failwith() masks dplyr::failwith()
## ✖ plotly::filter() masks dplyr::filter(), stats::filter()
## ✖ plyr::id() masks dplyr::id()
## ✖ dplyr::lag() masks stats::lag()
## ✖ plyr::mutate() masks plotly::mutate(), dplyr::mutate()
## ✖ plyr::rename() masks plotly::rename(), dplyr::rename()
## ✖ plyr::summarise() masks plotly::summarise(), dplyr::summarise()
## ✖ plyr::summarize() masks dplyr::summarize()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
##
## Adjuntando el paquete: 'jsonlite'
##
## The following object is masked from 'package:purrr':
##
## flatten
##
## The following objects are masked from 'package:RJSONIO':
##
## fromJSON, toJSON
##
## Adjuntando el paquete: 'rjson'
##
## The following objects are masked from 'package:jsonlite':
##
## fromJSON, toJSON
##
## The following objects are masked from 'package:RJSONIO':
##
## fromJSON, toJSON
Cargar environment
Determinar el consumo de antibióticos por comunidades autónomas, diferenciando entre recetado y no recetado, para identificar tendencias de uso.
tipo_ccaa_consumo_o_no <- read_delim("INPUT/DATA/datos_ccaa/tipo_ccaa_consumo_o_no.csv",
delim = ";", escape_double = FALSE, trim_ws = TRUE)## Rows: 3420 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (6): Sexo, Total Nacional, Comunidades y Ciudades Autónomas, Tipo de med...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
antibioticos <- tipo_ccaa_consumo_o_no %>%
filter(`Tipo de medicamento` == "Antibióticos")
antibioticos <- tipo_ccaa_consumo_o_no[tipo_ccaa_consumo_o_no$`Tipo de medicamento` == "Antibióticos" & tipo_ccaa_consumo_o_no$`Sexo` == "Ambos sexos",]
# Esta tabla enseña que el 3,54% de la población española en la última encuesta reconoce
# haber consumido antibióticos en las últimas 2 semanas (En el año 2021)
# Comunidad que más consume
antibioticos_si <- antibioticos[antibioticos$`Sí o no` == "Sí",]
antibioticos_si$Total <- gsub(",", ".", antibioticos_si$Total)
antibioticos_si$Total <- gsub(" ", "", antibioticos_si$Total)
antibioticos_si$Total <- as.numeric(antibioticos_si$Total)
# Revisa si hay NA después de la conversión
sum(is.na(antibioticos_si$Total)) # Muestra el número de NAs## [1] 0
consumo_comunidades <- antibioticos_si %>%
group_by(`Comunidades y Ciudades Autónomas`) %>%
arrange(desc(Total))
consumo_comunidades## # A tibble: 20 × 6
## # Groups: Comunidades y Ciudades Autónomas [20]
## Sexo `Total Nacional` Comunidades y Ciudad…¹ `Tipo de medicamento` `Sí o no`
## <chr> <chr> <chr> <chr> <chr>
## 1 Ambo… Total Madrid (Comunidad de) Antibióticos Sí
## 2 Ambo… Total Rioja (La) Antibióticos Sí
## 3 Ambo… Total Castilla y León Antibióticos Sí
## 4 Ambo… Total Comunitat Valenciana Antibióticos Sí
## 5 Ambo… Total País Vasco Antibióticos Sí
## 6 Ambo… Total Canarias Antibióticos Sí
## 7 Ambo… Total <NA> Antibióticos Sí
## 8 Ambo… Total Galicia Antibióticos Sí
## 9 Ambo… Total Navarra (Comunidad Fo… Antibióticos Sí
## 10 Ambo… Total Andalucía Antibióticos Sí
## 11 Ambo… Total Cataluña Antibióticos Sí
## 12 Ambo… Total Aragón Antibióticos Sí
## 13 Ambo… Total Castilla-La Mancha Antibióticos Sí
## 14 Ambo… Total Cantabria Antibióticos Sí
## 15 Ambo… Total Murcia (Región de) Antibióticos Sí
## 16 Ambo… Total Extremadura Antibióticos Sí
## 17 Ambo… Total Asturias (Principado … Antibióticos Sí
## 18 Ambo… Total Melilla (Ciudad Autón… Antibióticos Sí
## 19 Ambo… Total Ceuta (Ciudad Autónom… Antibióticos Sí
## 20 Ambo… Total Balears (Illes) Antibióticos Sí
## # ℹ abbreviated name: ¹`Comunidades y Ciudades Autónomas`
## # ℹ 1 more variable: Total <dbl>
c_c_final <- consumo_comunidades %>%
mutate(`Comunidades y Ciudades Autónomas` = ifelse(is.na(`Comunidades y Ciudades Autónomas`), "Total País", `Comunidades y Ciudades Autónomas`))
c_c_final## # A tibble: 20 × 6
## # Groups: Comunidades y Ciudades Autónomas [20]
## Sexo `Total Nacional` Comunidades y Ciudad…¹ `Tipo de medicamento` `Sí o no`
## <chr> <chr> <chr> <chr> <chr>
## 1 Ambo… Total Madrid (Comunidad de) Antibióticos Sí
## 2 Ambo… Total Rioja (La) Antibióticos Sí
## 3 Ambo… Total Castilla y León Antibióticos Sí
## 4 Ambo… Total Comunitat Valenciana Antibióticos Sí
## 5 Ambo… Total País Vasco Antibióticos Sí
## 6 Ambo… Total Canarias Antibióticos Sí
## 7 Ambo… Total Total País Antibióticos Sí
## 8 Ambo… Total Galicia Antibióticos Sí
## 9 Ambo… Total Navarra (Comunidad Fo… Antibióticos Sí
## 10 Ambo… Total Andalucía Antibióticos Sí
## 11 Ambo… Total Cataluña Antibióticos Sí
## 12 Ambo… Total Aragón Antibióticos Sí
## 13 Ambo… Total Castilla-La Mancha Antibióticos Sí
## 14 Ambo… Total Cantabria Antibióticos Sí
## 15 Ambo… Total Murcia (Región de) Antibióticos Sí
## 16 Ambo… Total Extremadura Antibióticos Sí
## 17 Ambo… Total Asturias (Principado … Antibióticos Sí
## 18 Ambo… Total Melilla (Ciudad Autón… Antibióticos Sí
## 19 Ambo… Total Ceuta (Ciudad Autónom… Antibióticos Sí
## 20 Ambo… Total Balears (Illes) Antibióticos Sí
## # ℹ abbreviated name: ¹`Comunidades y Ciudades Autónomas`
## # ℹ 1 more variable: Total <dbl>
Con estos datos podemos observar de manera gráfica la tendencia de consumo de antibióticos por comunidad autónoma en este país.
ggplot(c_c_final, aes(x = reorder(`Comunidades y Ciudades Autónomas`, -Total), y = Total)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(x = "Comunidades Autónomas", y = "Total Consumo", title = "Consumo de antibióticos por Comunidad Autónoma") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) A continuación estudiaremos si esa cantidad de antibiótico se ha consumido de forma regulada, o por el contrario, no está recetado, favoreciendo así el autoconsumo de los mismos, lo cual se está considerando como una de las posibles causas de la resistencia a los antibióticos
# Leer el archivo .px
archivo_px <- read.px("INPUT/DATA/datos_ccaa/tipo_ccaa_recetado_o_no.px")
df_px <- as.data.frame(archivo_px)
# quedarme solo con los antibióticos
antibiotic <- df_px[df_px[["Tipo.de.medicamento"]] == "Antibióticos" & df_px$`Sexo` == "Ambos sexos", ]
# qué comunidad autónoma se automedica más
antibioticos_sin_receta <- antibiotic[antibiotic$`Recetado` == "No recetado",]
antibioticos_sin_receta <- antibioticos_sin_receta %>%
filter(value != 0)
consumo_comunidades <- antibioticos_sin_receta %>%
group_by(`Comunidad.autónoma`) %>%
arrange(desc(value))
consumo_comunidades## # A tibble: 9 × 5
## # Groups: Comunidad.autónoma [9]
## Recetado Tipo.de.medicamento Comunidad.autónoma Sexo value
## <fct> <fct> <fct> <fct> <dbl>
## 1 No recetado Antibióticos País Vasco Ambos sexos 7.49
## 2 No recetado Antibióticos Asturias (Principado de) Ambos sexos 6.01
## 3 No recetado Antibióticos Navarra (Comunidad Foral de) Ambos sexos 4.18
## 4 No recetado Antibióticos Madrid (Comunidad de) Ambos sexos 3.24
## 5 No recetado Antibióticos Andalucía Ambos sexos 2.51
## 6 No recetado Antibióticos Comunitat Valenciana Ambos sexos 2.3
## 7 No recetado Antibióticos Total Ambos sexos 2.11
## 8 No recetado Antibióticos Canarias Ambos sexos 2.04
## 9 No recetado Antibióticos Castilla y León Ambos sexos 1.74
ggplot(consumo_comunidades, aes(x = "", y = value, fill = `Comunidad.autónoma`)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(title = "Consumo de Antibióticos por Comunidad Autónoma",
fill = "Comunidad Autónoma") +
theme_void() # Elimina el fondo y los ejesAnalizar si existe una relación significativa entre el Producto Interno Bruto de los países de la Unión Europea y los niveles de resistencia a antibióticos.
## Warning: Missing column names filled in: 'X14' [14]
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## `freq,na_item,ppp_cat,geo\TIME_PERIOD` = col_character(),
## `2012` = col_double(),
## `2013` = col_double(),
## `2014` = col_double(),
## `2015` = col_double(),
## `2016` = col_double(),
## `2017` = col_double(),
## `2018` = col_double(),
## `2019` = col_double(),
## `2020` = col_double(),
## `2021` = col_double(),
## `2022` = col_double(),
## `2023` = col_double(),
## X14 = col_logical()
## )
# Cambio de nombre columna
colnames(pibPP)[1] <- "pais"
# Nos quedamos con las últimas letras
pibPP$pais <- substr(pibPP$pais, nchar(pibPP$pais) - 1, nchar(pibPP$pais))
lista_pais <- list("BE", "BG", "CZ", "DK", "DE", "EE", "IE", "EL", "ES", "FR", "HR", "IT", "CY", "LV", "LT", "LU", "HU", "MT", "NL",
"AT", "PL", "PT", "RO", "SI", "SK", "FI", "SE")
# nos quedamos solo con los países de la UE
pib <- pibPP %>% filter(pais %in% unlist(lista_pais))
# quitar la columna nula
pib <- pib[, colSums(is.na(pib)) < nrow(pib)]
pib## # A tibble: 27 × 13
## pais `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020` `2021`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AT 133 133 132 131 130 127 128 126 125 122
## 2 BE 121 121 121 121 120 118 118 118 118 120
## 3 BG 47 46 47 48 49 50 52 53 55 57
## 4 CY 91 84 81 83 88 90 91 93 91 94
## 5 CZ 84 86 88 89 89 91 92 93 93 92
## 6 DE 124 125 127 124 125 124 124 121 123 120
## 7 DK 128 130 129 128 128 130 129 126 133 135
## 8 EE 74 76 78 76 77 79 82 83 85 86
## 9 EL 71 72 72 70 68 67 66 66 62 63
## 10 ES 91 90 90 91 92 93 91 91 83 84
## # ℹ 17 more rows
## # ℹ 2 more variables: `2022` <dbl>, `2023` <dbl>
pib_2022 <- pib %>% select(pais, `2022`)
# ggplot del pib en el 2022 (primero lo ponemos en descendente)
pib_2022_desc <- pib_2022 %>% arrange(desc(`2022`))
# sustituir las etiquetas de los países
pib_2022_desc <- pib_2022_desc %>%
mutate(pais = case_when(
pais == "SK" ~ "Eslovaquia",
pais == "SI" ~ "Slovenia",
pais == "EE" ~ "Estonia",
pais == "MT" ~ "Malta",
pais == "LV" ~ "Latvia",
pais == "HR" ~ "Croatia",
pais == "EL" ~ "Greece",
pais == "BG" ~ "Bulgaria",
TRUE ~ pais # Mantiene los nombres que no están en la lista
))Tras el tratamiento de estos datos se puede ver de manera gráfica la comparativa entre los países.
grafico_pib <- ggplot(pib_2022_desc, aes(x = reorder(pais, -`2022`), y = `2022`)) +
geom_bar(stat = "identity", fill = "gold") +
labs(x = "País", y = "Valor en 2022", title = "PIB por País en 2022") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor legibilidad
grafico_pibUna vez observada la primera variable, generamos los datos del valor medio de la resistencia a antimicrobianos en los países europeos para comprobar si existe una relación o, efectivamente no tiene que ver.
Incidencia_enfermedades <- read_csv("INPUT/DATA/ECDC_encuesta_AMR_incidencia_enfermedades.csv")
incidencia_2022MF <- Incidencia_enfermedades %>%
filter(Time == 2022) %>%
filter(Category == 'Male' | Category == 'Female')
incidencia_2022MF$Value <- as.numeric(incidencia_2022MF$Value)
media_poblacion <- incidencia_2022MF %>%
select(-Unit, -HealthTopic, -Time, -Distribution) %>%
mutate(grupo = substr(Population, 1, 3))
otra <- media_poblacion %>%
select(-Category, -CategoryIndex, -Population) %>%
arrange(RegionCode, grupo) %>%
group_by(RegionCode, grupo) %>%
summarise(mean_value = mean(Value, na.rm = TRUE))
otra$mean_value[is.nan(otra$mean_value)] <- 0
media_region <- otra %>%
group_by(RegionCode) %>%
summarise(mean_value_region = mean(mean_value, na.rm = TRUE))
boxplot <- ggplot(otra, aes(x = grupo, y = mean_value)) +
geom_boxplot() +
labs(title = "Distribution of Mean Incidence by Bacteria Group",
x = "Bacteria Group", y = "Mean Incidence") +
theme_minimal()
incidencia_keyed <- highlight_key(otra, ~RegionCode)
scatter_plot <- ggplot(incidencia_keyed, aes(x = grupo, y = mean_value, color = RegionCode, text = paste("País:", RegionCode))) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "Population vs Mean Incidence Value by Region",
x = "Population", y = "Mean Incidence Value") +
theme_classic()
interactive_scatter_plot <- ggplotly(scatter_plot, tooltip = "text") %>%
highlight(on = "plotly_click", off = "plotly_doubleclick", color = "red", opacityDim = 0.2)
interactive_scatter_plotEste código cargado en el entorno, es capaz de generar gráficos que permitan ver la incidencia de las distintas bacterias por cada país y para ver cuál es la bacteria que más afecta en toda la Unión Europea.
boxplot_in <- ggplot(otra, aes(x = grupo, y = mean_value)) +
geom_boxplot() +
labs(title = "Distribution of Mean Incidence by Bacteria Group",
x = "Bacteria Group", y = "Mean Incidence") +
theme_minimal()
boxplot_inincidencia_keyed <- highlight_key(otra, ~RegionCode)
scatter_plot <- ggplot(incidencia_keyed, aes(x = grupo, y = mean_value, color = RegionCode, text = paste("País:", RegionCode))) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "Population vs Mean Incidence Value by Region",
x = "Population", y = "Mean Incidence Value") +
theme_classic()
interactive_scatter_plot <- ggplotly(scatter_plot, tooltip = "text") %>%
highlight(on = "plotly_click", off = "plotly_doubleclick", color = "red", opacityDim = 0.2)## `geom_smooth()` using formula = 'y ~ x'
A continuación, se presenta una función que permite abrir una carpeta con numerosos archivos de extensión .json con la misma estructura y leerlos.
library(httr)
library(tidyverse)
library(jsonlite)
library(readxl)
library(rjson)
obtener_nombre<-function(carpeta){
archivos <- as.list(list.files(path =carpeta))
lista_nombres<-list()
for(i in 1:length(archivos)){
posicion1<-regexpr("_", archivos[[i]])
posicion2<-regexpr("\\.", archivos[[i]])
subcadena<-substr(archivos[[i]], posicion1+1, posicion2-1)
lista_nombres[[i]]<-subcadena
}
return(lista_nombres)
}
obtener_archivo<-function(direccion){
lista_paises<-obtener_nombre(direccion)
lista_enlace<-list()
direccion_archivos<-list()
for(i in lista_paises){
cada_pais<-paste0("AMR_",i,".json")
lista_enlace[i]<-cada_pais
}
for(i in lista_enlace){
cada_archivo<-paste0(direccion,"/",i)
direccion_archivos[i]<-cada_archivo
}
for(i in direccion_archivos){
pais<-fromJSON(file= i)
enlace<-pais$links$archive
respuesta_archivo <- GET(enlace)# Hacer la solicitud HTTP para descargar el archivo
nombre_archivo<-basename(enlace)#Extrae el nombre del archivo de la URL
if (status_code(respuesta_archivo) == 200) {# Verificar si la solicitud fue exitosa (código 200, código estándar HTTP que significa "OK")
# Guardar el archivo ZIP localmente en formato binario
writeBin(content(respuesta_archivo, "raw"), nombre_archivo)
print("Archivo ZIP descargado correctamente.")
unzip(nombre_archivo, exdir = "carpeta_destino", overwrite = TRUE)
} else {
print(paste("Error al descargar el archivo. Código de respuesta:", status_code(respuesta_archivo)))
}
}
}
obtener_archivo("INPUT/DATA/Resistecia_Antibioticos_UE")
leer_archivo <- function(carpeta) {
carpeta_destino <- carpeta
archivos_zip <- list.files(carpeta_destino, pattern = "\\.zip$", full.names = TRUE)
# Iterar sobre los archivos .zip y descomprimirlos
for (archivo in archivos_zip) {
# Descomprimir el archivo .zip
archivos_extraidos <- unzip(archivo, exdir = carpeta_destino, overwrite = TRUE)
print(paste("Descomprimido:", archivo)) # Imprimir cada archivo que se descomprime
# Filtrar el archivo .xlsx entre los extraídos
archivo_xlsx <- archivos_extraidos[grepl("\\.xlsx$", archivos_extraidos)]#Aquí, grepl() busca archivos cuyos nombres terminen con .xlsx
# Verificar si hay algún archivo .xlsx descomprimido
if (length(archivo_xlsx) > 0) {
# Leer el archivo Excel como dataframe
datos_xlsx <- read_excel(archivo_xlsx[1]) # Leer el primer archivo .xlsx encontrado
# Asignar el dataframe al Global Environment usando el nombre del archivo como variable
nombre_variable <- make.names(basename(archivo_xlsx[1])) # Crear un nombre de variable válido
assign(nombre_variable, datos_xlsx, envir = .GlobalEnv) # Asignar el dataframe al Global Environment
}
}
}
leer_archivo("carpeta_destino")Juntar los dataframes que tenemos en el enviroment 1. Listar los nombres de todos los dataframes que terminan en “.xlsx” (ajusta si es necesario) 2. Convertir los nombres a una lista de dataframes usando mget() 3. Unir todos los dataframes en uno solo usando bind_rows
nombres_dataframes <- ls(pattern = "_AMR_PUB\\.xlsx$")
lista_dataframes <- mget(nombres_dataframes)
df_combinado <- bind_rows(lista_dataframes, .id = "origen")Cargamos el global enviroment En el que tenemos guardado todos los dataframe de cada pais resultante de la funcion leer_archivo, y el dataframe df_combinado del codigo anterior
Modificación y obtencion del dataframe con los datos seleccionamos las columnas que vamos a necesitar y filtramos en la columna de las bacterias solo las patogénicas.
Cambiamos los nombres de las columnas y lo asignamos al dataframe
paises_UE_df<-df_combinado%>%
select(rep_Country_name,rep_Country_code,zoonosis_name,matrix_name,totUnitsTested,totUnitsPositive,sampUnitType_name,sampType_name,MIC_name,CUTOFFVALUE)%>%
mutate(zoonosis_name = sub(".*", "", zoonosis_name))%>% # Extraer solo la primera palabra
filter(zoonosis_name != "Escherichia coli, non-pathogenic, unspecified")
nuevos_nombres <- c("NombrePais", "Codigo", "zoonosis_name","OrigenMuestra", "TotalMuestras","MuestraPositiva","Tipo_Unidad_Muestra","TipoMuestra","MIC_name","ValorCorte") # Modifica según el número de columnas
colnames(paises_UE_df) <- nuevos_nombresMapa Interactivo de positivos en ganaderia por paises de la UE
library(sf)
library(ggplot2)
library(plotly)
library(dplyr)
library(viridis)
paises_UE <- c(
"Cyprus", "France", "Lithuania", "Czechia", "Germany",
"Estonia", "Latvia", "Sweden", "Finland", "Luxembourg",
"Belgium", "Spain", "Denmark", "Romania", "Hungary",
"Slovakia", "Poland", "Ireland", "Greece", "Austria",
"Italy", "Netherlands", "Croatia", "Slovenia", "Bulgaria",
"Portugal", "Malta"
)
mapa_mudo <- st_read("INPUT/DATA/mapaMundi") ## Reading layer `ne_10m_admin_0_countries' from data source
## `C:\Users\deyan\fuentes\seminario_fuentes\INPUT\DATA\mapaMundi'
## using driver `ESRI Shapefile'
## Simple feature collection with 258 features and 168 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -180 ymin: -90 xmax: 180 ymax: 83.6341
## Geodetic CRS: WGS 84
mapa_mundo_europa <- mapa_mudo %>%
dplyr::filter(NAME %in% paises_UE)
mapa_mundo_europa <- mapa_mudo %>% dplyr::filter(NAME %in% paises_UE)
positivos_por_ciudad <- paises_UE_df %>%
dplyr::filter(NombrePais != "United Kingdom (Northern Ireland)")%>%
group_by(NombrePais) %>%
dplyr::summarize(total_pruebas = sum(TotalMuestras, na.rm = TRUE),
total_positivos= sum(MuestraPositiva, na.rm = TRUE)) %>%
mutate(ratio_positivo = (total_positivos / total_pruebas) * 100)
# Unir datos de positividad al mapa
mapa_mundo_europa$NAME <- as.character(mapa_mundo_europa$NAME)
positivos_por_ciudad$NombrePais <- as.character(positivos_por_ciudad$NombrePais)
# Realizar el join usando las columnas correctas
mapa_mundo_europa <- mapa_mundo_europa %>%
left_join(positivos_por_ciudad, by = c("NAME" = "NombrePais"))
mapa <- ggplot(mapa_mundo_europa) +
geom_sf(aes(fill = ratio_positivo)) +
scale_fill_viridis_c(option = "plasma", na.value = "gray") +
labs(title = "Tasa de Positividad por País en Europa",
fill = "Tasa de Positividad (%)") +
coord_sf(xlim = c(-30, 50), ylim = c(35, 72), expand = FALSE) + # Ajustar límites para hacer zoom en Europa
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
# Convertir el gráfico a interactivo con plotly
mapa_interactivo <- ggplotly(mapa)
mapa_interactivoExplorar cómo el consumo de antibióticos en sectores como el personal, hospitalario y ganadero se relaciona con los niveles de resistencia a antibióticos en diferentes países de la UE.
Otro de los factores a estudiar era el consumo/administración de este tipo de los medicamentos por parte de los hospitales y la ciudadanía de manera individual, y eso se ve reflejado en los siguientes datos extraídos de la encuesta europea anual.
library(tidyverse)
library(rjson)
library(dplyr)
library(tidyr)
library(ggplot2)
DDD_Europa_Json <- fromJSON(file = "INPUT/DATA/DDD_1000_habitantes_paises.JSON")
DDD_Europa_df <- do.call(rbind, lapply(DDD_Europa_Json, function(x) {
data.frame(Country = x$Country,
DDD_per_1000_inhabitants_per_day = as.numeric(x$`DDD per 1000 inhabitants per day`))
}))Gráfico de barras de la Dosis de antibióticos media Diaria Definida de los países ordenados de mayor a menor consumo
grafico_DDD <- ggplot(DDD_Europa_df, aes(x = reorder(Country, -DDD_per_1000_inhabitants_per_day),
y = DDD_per_1000_inhabitants_per_day)) +
geom_bar(stat = "identity", fill = "turquoise") +
labs(title = "DDD por 1000 habitantes por día en Europa",
x = "País",
y = "DDD por 1000 habitantes por día") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
grafico_DDD